package com.treeroot.designMode.Strategy;


import lombok.Data;

/**
 * 上下文--->策略的使用者
 * 上下文用来操作策略的上下文环境，屏蔽高层模块对策略、算法的直接访问，封装可能存在的变化
 * @author treeroot
 */
@Data
public class DiscountContext {
    /**
     * 商品实体类
     */
    private Goods goods;
    /**
     * 策略接口
     */
    private DiscountStrategy strategy;
    public DiscountContext(Goods goods, DiscountStrategy strategy) {
        this.goods = goods;
        this.strategy = strategy;
    }
    /**
     * 计算折扣价格的方法
     * 该方法可以动态地设置不同的策略对象，从而实现不同类型商品的打折操作
     *
     * @return 价格
     */
    public double calculateDiscountPrice() {
        return this.strategy.calculateDiscountPrice(goods);
    }
}
